package com.ahorresas.conexion;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexion {
    
    public Connection conexion;

     /**
     * @return El valor de la clase Connection dependiendo de la conexión establecida.
     */
    public Connection getConexion(){
        ConexionBD();
        return conexion;
    }

    /**
     * Envia el valor de la conexión.
     * @param conexion valor de la conexión a establecer.
     */
    public void setConexion(Connection conexion){
        this.conexion = conexion;
    }
    
    static{
        try {
            Class.forName("org.postgresql.Driver").newInstance();//Se carga el driver a utilizar
        }
        catch(ClassNotFoundException e1){
            System.out.println("ClassNotFoundException "+e1.getMessage());//mensaje de error "clase no encontrada"
        }
        catch (InstantiationException e2){
            System.out.println("InstantiationException "+e2.getMessage());//error en instanciacion "no creo el objeto"
        }
        catch(IllegalAccessException e3){
            System.out.println("IllegalAccessException "+e3.getMessage());//No se puede encontrar el driver
        }
    }

    /**
     * Crea la conexion fisica entre la aplicacion web y la base de datos Postgre.
     */
    public void ConexionBD(){
        try{
            //Se llama la conexion utilizando el "driver// el servidor/ la BD", ususario, contraseña
            setConexion(DriverManager.getConnection("jdbc:postgresql://localhost:5432/ahorresas","ahorresas","ahorresas"));
        } catch(SQLException e4){
            System.out.print("SQLException "+e4.getMessage());
        }
    }
    
    /**
     * Cierra una conexión específica
     * @param con Contiene la conexión que se debe cerrar
     */
    public void cerrarConexion(Connection con){
        try {
            if(con != null)
                con.close();
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
}
